package com.base.sort.impl;

import com.base.sort.IArraySort;

import java.util.Arrays;

public class SelectionSort implements IArraySort {
//    @Override
//    public int[] sort(int[] arr) {
//        int[] array= Arrays.copyOf(arr,arr.length);
//        //总计要进行n-1轮选择
//        for (int i = 0; i < array.length-1; i++) {
//            int min=i;
//            for (int j = i+1; j <array.length ; j++) {
//                if (array[min]>array[j]){
//                    min=j;
//                }
//            }
//            if (i!=min){
//            int tmp=array[i];
//            array[i]=array[min];
//            array[min]=tmp;}
//        }
//        return array;
//    }


    @Override
    public <T extends Comparable<T>> T[] sort(T[] unsorted) {
        T[] ts = Arrays.copyOf(unsorted,unsorted.length);
        for (int i = 0; i < ts.length-1; i++) {
            int min = i;
            for (int j = 1+i; j < ts.length; j++) {
                if(ts[j].compareTo(ts[min])<0){
                    min = j;
                }
            }
            if(i!=min){
                T tmp = ts[i];
                ts[i] = ts[min];
                ts[min] = tmp;
            }
        }
        return ts;
    }
}
